package com.cspm.common.util;

import org.apache.commons.lang.StringUtils;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 静态化路径工具类
 * 
 * @author CHENQUAN
 * @date 2016年9月13日
 */
public class PathUtil {

    /** 路径间隔符 */
    public static String fileSeparator = System.getProperty("file.separator");

    /**
     * 获取到classes目录
     * 
     * @return path
     */
    public static String getClassPath() {
	String systemName = System.getProperty("os.name");

	// 判断当前环境，如果是Windows 要截取路径的第一个 '/'
	if (!StringUtils.isBlank(systemName)
		&& systemName.indexOf("Windows") != -1) {
	    return PathUtil.class.getResource("/").getFile().toString()
		    .substring(1);
	} else {
	    return PathUtil.class.getResource("/").getFile().toString();
	}
    }

    /**
     * 获取当前对象的路径
     * 
     * @param object
     * @return path
     */
    public static String getObjectPath(Object object) {
	return object.getClass().getResource(".").getFile().toString();
    }

    /**
     * 获取到项目的路径
     * 
     * @return path
     */
    public static String getProjectPath() {
	return System.getProperty("user.dir");
    }

    /**
     * 获取 root目录
     * 
     * @return path
     */
    public static String getRootPath() {
	return getWEB_INF().replace("WEB-INF/", "");
    }

    /**
     * 获取输出HTML目录
     * 
     * @return
     */
    public static String getHTMLPath() {
	return getFreePath() + "html/html/";
    }

    /**
     * 获取输出FTL目录
     * 
     * @return
     */
    public static String getFTLPath() {
	return getFreePath() + "html/ftl/";
    }

    /**
     * 获取 web-inf目录
     * 
     * @return path
     */
    public static String getWEB_INF() {
	return getClassPath().replace("classes/", "");
    }

    /**
     * 获取模版文件夹路径
     * 
     * @return path
     */
    public static String getFreePath() {
	return getWEB_INF() + "ftl/";
    }

    /**
     * 获取一个目录下所有的文件
     * 
     * @param path
     * @return
     */
    public static File[] getFiles(String path) {
	File file = new File(path);
	File[] files = file.listFiles();
	return files;
    }

    /**
     * 获取当前时间 + 中国时区
     * 
     * @return
     */
    public static String getDate() {
	SimpleDateFormat sformart = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
	String result = sformart.format(new Date());
	result = result.replace("_", "T");
	result += "+08:00";
	return result;
    }

    /**
     * 不带结尾的XmlSitemap头部
     * 
     * @return
     */
    public static String getXmlSitemap() {
	StringBuffer sb = new StringBuffer()
		.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
			+ nextLine())
		.append("<?xml-stylesheet type=\"text/xsl\" href=\"sitemap.xsl\"?>"
			+ nextLine())
		.append("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">"
			+ nextLine());
	return sb.toString();
    }

    /**
     * 文本换行
     * 
     * @return
     */
    public static String nextLine() {
	String nextLine = System.getProperty("line.separator");
	return nextLine;
    }

    /**
     * 获取domain
     * 
     * @param request
     * @return
     */
    public static String getDomain(HttpServletRequest request) {
	return ((String) request.getSession().getAttribute("nowPath"))
		.replaceAll("(www.)|(.com)|(.net)|(http://)", "").trim();
    }

    /**
     * 获取images 路径
     * 
     * @return
     */
    public static String getImages() {
	return getRootPath() + "images/";
    }

    /**
     * 路径格式转换为系统路径
     * 
     * @param path
     *            路径
     * @return 转换后的系统路径
     */
    public static String pathConverter(String path) {
	char[] chars = path.toCharArray();
	StringBuilder rst = new StringBuilder();
	for (int i = 0; i < chars.length; i++) {
	    boolean isFileSeparator = false;
	    while (chars[i] == '\\' || chars[i] == '/') {
		isFileSeparator = true;
		++i;
	    }
	    if (i >= chars.length) {
		break;
	    }
	    if (isFileSeparator) {
		rst.append(fileSeparator);
	    }
	    rst.append(chars[i]);
	}
	return rst.toString();
    }

    /**
     * 路径格式转换
     * 
     * @param path
     *            路径
     * @param separator
     *            分隔符
     * @return 转换后路径
     */
    public static String pathConverter(String path, char separator) {
	char[] chars = path.toCharArray();
	StringBuilder rst = new StringBuilder();
	for (int i = 0; i < chars.length; i++) {
	    boolean isFileSeparator = false;
	    while (chars[i] == '\\' || chars[i] == '/') {
		isFileSeparator = true;
		++i;
	    }
	    if (i >= chars.length) {
		break;
	    }
	    if (isFileSeparator) {
		rst.append(separator);
	    }
	    rst.append(chars[i]);
	}
	return rst.toString();
    }

    public static void main(String[] args) {
	String videoPath = "F:\\Youku Files/download/课堂实录视频20160530_20_标清.mp4";
	System.out.println(pathConverter(videoPath));
    }
}
